当DP遇见Py(六) -- 原型模式
定义:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
类图:

类型:创建型
实例:
从简历原型,生成新的简历。
C++ 实现
1 | #include <iostream> |
Python 实现
1 | # -*- coding=utf-8 -*- |
执行结果:
1 | 大鸟 男 29 |
Tips:
- 以上的
Python实现比C++提供了更丰富和完整的原型模式实现。使用Prototype类来管理原型,并提供统一的clone方法来生成新对象。 - Python为对象提供的copy模块中的copy方法和deepcopy方法已经实现了原型模式。
copy方法实现浅拷贝,deepcopy方法实现深拷贝。 __str__魔术方法。用来定义对象如何转换为字符串形式,被print所调用。关于Python的魔术方法请见《当DP遇见Py(四) — 代理模式》中的介绍。__dict__。Python中的__dict__比较神奇,一两句话也说不清楚。简而言之,你可以把__dict__看做Python对象的属性字典(注:Python中一切皆对象,O(∩∩)O~)。Python的强大的动态能力,如:Python的对象可以在运行期动态添加定义时没有的属性,就是这货在提供支持。语句`obj._dict.update(attr)就是根据用户传入的attr来更新对象obj`的属性。


“克隆”是要给钱地!